﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using grupo2DEWStudio7i.Negocio;
using grupo2DEWStudio7i.Dominio;
using grupo2DEWStudio7i.Persistencia;


namespace grupo2DEWStudio7i.Controllers
{
    public class ServicioController : Controller
    {
        //Dependencias
        public AdministracionServiceImpl AdminService { get; set; }
        // GET: /Servicio/

        public ActionResult Index()
        {
            ICollection<Servicio> lista = AdminService.ListarServicio();
            return View(lista);
        }


        public ActionResult Details(int Codigo)
        {
            Servicio modelo = AdminService.ObtenerServicio(Codigo);
            return View(modelo);
        }


        public ActionResult Create()
        {
            try
            {
                return View();
            }
            catch
            {
                ModelState.AddModelError(String.Empty, "Error al crear un Servicio");
                return View();
            }
        }


        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Servicio servicioCrear = new Servicio();
                    servicioCrear.Descripcion = collection["Descripcion"];
                    servicioCrear.CostoXhora = int.Parse(collection["CostoXhora"]);
                    AdminService.CrearServicio(servicioCrear);
                }
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(String.Empty, "Error al crear un servicio: " + ex.Message);
                return View();
            }
        }


        public ActionResult Edit(int id)
        {
            Servicio ServicioaCrear = AdminService.ObtenerServicio(id);

            return View(ServicioaCrear);
        }


        [HttpPost]
        public ActionResult Edit(FormCollection collection)
        {
            Servicio servicioaModificar = new Servicio();
            {
                servicioaModificar.Codigo = int.Parse(collection["codigo"]);
                servicioaModificar.Descripcion = collection["descripcion"];
                servicioaModificar.CostoXhora = int.Parse(collection["costoxhora"]);
            };
            try
            {
                //if (ModelState.IsValid)
                //{
                //Servicio servicioaModificar = new Servicio();
                //servicioaModificar.Codigo = int.Parse(collection["codigo"]);
                //servicioaModificar.Descripcion = collection["descripcion"];
                //servicioaModificar.CostoXhora = int.Parse(collection["costohora"]);
                Servicio servicioModificado = AdminService.ModificarServicio(servicioaModificar);
                TempData["mensaje"] = "Servicio " + servicioaModificar.Codigo + " modificado exitosamente";
                //AdminService.modi(servicioaModificar);
                // }
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(String.Empty, "Error al crear Instrumento: " + ex.Message);
                return View("Edit", servicioaModificar);
            }
        }


        public ActionResult Delete(int id)
        {
            return View(AdminService.ObtenerServicio(id));
        }

        //
        // POST: /Instrumento/Delete/5

        [HttpPost]
        public ActionResult Eliminar(int id)
        {
            try
            {
                Servicio servicioAEliminar = AdminService.ObtenerServicio(id);
                AdminService.EliminarServicio(servicioAEliminar);
                TempData["mensaje"] = "Servicio " + servicioAEliminar.Codigo + " eliminado exitosamente";
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {

                ModelState.AddModelError(string.Empty, ex.Message);
                return View("Delete", AdminService.ObtenerServicio(id));
            }
        }

    }
}
